table of contents
SIGNAL(2) | Linux - příručka Programátora | SIGNAL(2) |
JMÉNO¶
signal - práce se signály v ANSI C
SYNTAXE¶
#include <signal.h>
void (*signal(int signum, void (*handler)(int)))(int);
POPIS¶
Systémové volání signal instaluje novou obslužnou funkci pro signál s číslem signum. Obsluha signálu je nastavena na handler, což může být uživatelsky definovaná funkce, nebo jedna z následujících konstant:
Obslužná funkce dostane při zavolání jako parametr číslo signálu. To umožňuje použít jednu obslužnou funkci pro více signálů.
NÁVRATOVÁ HODNOTA¶
Funkce signal vrací předchozí hodnotu obsluhy signálu, nebo SIG_ERR , nastane-li chyba.
POZNÁMKY¶
Nelze nastavit obsluhu signálů SIGKILL a SIGSTOP.
V Linuxu se na rozdíl od systémů BSD obsluha signálu vrací při příchodu signálu na standardní hodnotu. Když ale použijete #include <bsd/signal.h> místo <signal.h> , je funkce signal předefinována na __bsd_signal a chová se jako v BSD. Obě verze funkce signal jsou knihovní funkce, které používají systémové volání sigaction(2).
Není-li Vám jasná syntaxe uvedená na začátku této manuálové stránky, možná Vám pomůže tento ekvivalentní zápis:
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t
handler);
Podle normy POSIX není definováno chování procesu poté, co ignoruje signál SIGFPE, SIGILL, nebo SIGSEGV, který nebyl generován funkcemi kill() nebo raise(). Celočíselné dělení nulou dává nedefinovaný výsledek a na některých architekturách generuje signál SIGFPE. Ignorování tohoto signálu může způsobit zacyklení procesu.
SPLŇUJE STANDARDY¶
ANSI C
DALŠÍ INFORMACE¶
kill(1), kill(2), killpg(2), pause(2), raise(3), sigaction(2), signal(7), sigsetops(3), sigvec(2), alarm(2).
VAROVÁNͶ
Překlad je pravděpodobně zastaralý. Pokud chcete pomoci s jeho aktualizací, zamiřte na http://man-pages-cs-wiki.homelinux.net/
18. února 1997 | Linux 2.0 |